﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlServerCe;

namespace EWS
{
    public partial class frmEditPatientName : Form
    {
        public uint fkPaID;
        public string vorname;
        public string name;

        public frmEditPatientName()
        {
            InitializeComponent();
            
        }




        static bool IsValidAlphaNumericString(string strAlphanum)
        {
            System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex(@"^[A-Za-z0-9ÜüÖöÄäß]+$");
            return pattern.IsMatch(strAlphanum.Trim());
        }

        private void txtName_TextChanged(object sender, EventArgs e)
        {
            if (txtName.Text == "")
                // Keine Eingabe
                txtName.BackColor = Color.White;
            else
                // Eingabe vorhanden
                if (IsValidAlphaNumericString(txtName.Text) == true)
                {
                    // Eingabe valide
                    txtName.BackColor = Color.FromArgb(231, 246, 231);
                }
                else
                {
                    // Eingabe nicht valide
                    txtName.BackColor = Color.FromArgb(246, 238, 238);
                    toolTip1.ToolTipTitle = "Achtung";
                    toolTip1.Show("Sie haben unzulässige Zeichen eingegeben! Erlaubte Zeichen A-Z, a-z, 0-9, Üü, Öö, Ää, ß.", txtName);

                }
            CheckAllInputs();
        }

        private void txtVorname_TextChanged(object sender, EventArgs e)
        {
            if (txtVorname.Text == "")
                // Keine Eingabe
                txtVorname.BackColor = Color.White;
            else
                // Eingabe vorhanden
                if (IsValidAlphaNumericString(txtVorname.Text) == true)
                {
                    // Eingabe valide
                    txtVorname.BackColor = Color.FromArgb(231, 246, 231);
                }
                else
                {
                    // Eingabe nicht valide
                    txtVorname.BackColor = Color.FromArgb(246, 238, 238);
                    toolTip1.ToolTipTitle = "Achtung";
                    toolTip1.Show("Sie haben unzulässige Zeichen eingegeben! Erlaubte Zeichen A-Z, a-z, 0-9, Üü, Öö, Ää, ß.", txtVorname);

                }
            CheckAllInputs();
        }

        // Checkt ob alle Eingabe valide sind
        private void CheckAllInputs()
        {
            btnReset.Enabled = !((txtName.Text == name) && (txtVorname.Text == vorname));
            

            if (txtVorname.Text != "" && IsValidAlphaNumericString(txtVorname.Text) == true)
            {
                if (txtName.Text != "" && IsValidAlphaNumericString(txtName.Text) == true)
                {
                    btnAdd.Enabled = !((txtName.Text == name) && (txtVorname.Text == vorname));
                    return;
                }


            }
            btnAdd.Enabled = false;
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }





        

        void UpdatePatientName()
        {
            // Verbinndung aufbauen
            SqlCeConnection conn = new SqlCeConnection(Properties.Settings.Default.EWS_DatabaseConnectionString);
            conn.Open();

            // Commando aufbauen
            SqlCeCommand cmd = conn.CreateCommand();
            cmd.Connection = conn;

            cmd.CommandText = @"UPDATE Patient SET Vorname=@vor, Nachname=@nach WHERE PaID=@paid";
            cmd.Parameters.AddWithValue("@vor", txtVorname.Text);
            cmd.Parameters.AddWithValue("@nach", txtName.Text);
            cmd.Parameters.AddWithValue("@paid", fkPaID);

            cmd.ExecuteNonQuery();

            conn.Close();
            
        }






        private void btnAdd_Click(object sender, EventArgs e)
        {
            UpdatePatientName();    // Neuen Patientnamen in DB eintragen.
            this.Close();           // Fertig! -> Schließen.
        }

        private void frmEditPatientName_Load(object sender, EventArgs e)
        {
            txtName.Text = name;
            txtVorname.Text = vorname;

        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtName.Text = name;
            txtVorname.Text = vorname;
        }

      

    }
}
